// 正则用于查找字符并替换
// 正则由模式和修饰符组成
// 方式一： new RegExp(pattern, [flags])
// 方式二：/pattern/[flags]

// 模式有以下值：
// - g: 全局匹配
// - i: 忽略大小写
// - m: 多行匹配
// - s: 允许 . 匹配换行符
// - u: 启用 Unicode 匹配，用于处理代理对
// - y: 粘性匹配，从 lastIndex 开始匹配

// 词边界：\b
// - 字符串开头是 \w
// - 字符串结尾是 \w
// - 字符串一侧是 \w，另一侧是 \W


// # 搜索 String.prototype.match
{
  // 只查找一个匹配项， 会返回一个匹配的详细结果，
  let str = "We will, we will rock you"
  console.log(str.match(/we/i))
  // [
  //   'We',
  //   index: 0,
  //   input: 'We will, we will rock you',
  //   groups: undefined
  // ]

  // 查找多个，会以数组形式返回查找到的值，如果没有匹配项则返回 null
  console.log(str.match(/we/gi)) // ['We', ‘we’]

  console.log(str.match(/wee/gi)) // null
}

// # 替换 String.prototype.replace
{
  let str = "We will, we will rock you"
  console.log(str.replace(/we/, 'We')) // We will, we will rock you
}

// # 测试 RegExp.prototype.test
{
  let str = "We will, we will rock you"
  console.log(/We/i.test(str)); 
}


{
  let regexp = /(<body(\s.*?)?>)/;

  let str = `
  <html>
    <body style="height: 200px">
    ...
    </body>
  </html>
  `;

  str = str.replace(regexp, `$1<h1>Hello</h1>`);
  console.log(str);
}